package it.gestionedocumentale.struts.action.upload;

import java.util.ArrayList;
import java.util.List;

import it.gestionedocumentale.model.Classificazione;
import it.gestionedocumentale.model.Gruppo;
import it.gestionedocumentale.model.Tag;
import it.gestionedocumentale.model.Utente;
import it.gestionedocumentale.spring.service.MyServiceFactory;
import it.gestionedocumentale.struts.form.DocumentoForm;
import it.gestionedocumentale.utility.UtilityDate;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class UploadDocumentoAction extends Action {
	
	// forward alla pagina di conferma dopo aver validato il documento
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		Utente utenteSession = (Utente) request.getSession().getAttribute("utenteSession");
		if(utenteSession == null) {
			return mapping.findForward("notInSession");
		}
		
		DocumentoForm documentoForm = (DocumentoForm) form;
		
        FormFile formFile = documentoForm.getFile();
        byte[] arrayByte = formFile.getFileData();
       
	    String dataUploadString = new String();
	    dataUploadString = UtilityDate.getDateAsString(UtilityDate.today(), "dd/MM/yyyy");
	    
	    HttpSession session = request.getSession();
	    session.setAttribute("arrayByte", arrayByte);
	    
	    documentoForm.setNome(formFile.getFileName());
	    documentoForm.setDataUploadString(dataUploadString);
	    documentoForm.setSize((double) formFile.getFileSize());
	    
	    // ******************** lista classificiazioni dal DB ********************
	    List<Classificazione> listaClassificazioni = new ArrayList<Classificazione>();
	    listaClassificazioni = MyServiceFactory.getClassificazioneService().findAll();
	    
	    // ******************** lista gruppi dal DB ********************
	    List<Gruppo> listaGruppi = new ArrayList<Gruppo>();
	    listaGruppi = MyServiceFactory.getGruppoService().findAll();
	    
	    // ******************** lista di tag dal DB ********************
	    List<Tag> listaTag = new ArrayList<Tag>();
	    listaTag = MyServiceFactory.getTagService().findAll();
	    
	    // ******************** lista di utenti dal DB ********************
	    List<Utente> listaUtenti = new ArrayList<Utente>();
	    listaUtenti = MyServiceFactory.getUtenteService().findAllActive();
	    
	    List<Classificazione> listaSelezioneClass = new ArrayList<Classificazione>();
	    
	    request.getSession().setAttribute("listaSelezioneClass", listaSelezioneClass);
	    request.setAttribute("listaClassificazioni", listaClassificazioni);
	    request.setAttribute("listaGruppi", listaGruppi);
	    request.setAttribute("listaTag", listaTag);
	    request.setAttribute("listaUtenti", listaUtenti);
	    return mapping.findForward("ok");
	}
	
}
